import axios from "axios";
import qs from 'qs';
import { getToken } from "@u/index"
import { showFailToast } from 'vant'
import router from '@/router'
// 定义baseURL以及过期时间
axios.defaults.baseURL = import.meta.env.VITE_BASE_URL;
axios.defaults.timeout = 8000;
// 添加拦截器
axios.interceptors.request.use(
  function (config) {
    /*
      大部分接口是在请求头中添加token 我们这个接口
      请求 参数 添加 token
    */
    if (getToken()) {
      // 判断是什么请求
      if (config.method === 'get') {
        config.params = {
          ...config.params,
          token: getToken()
        }
      } else {
        // post请求
        config.data = {
          ...config.data,
          token: getToken()
        }
      }
    }


    if(config.method === 'post' && config.data) {
      config.data = qs.stringify(config.data)
    }
    // 处理token
    return config;
  },
  function (error) {
    return Promise.reject(error);
  }
);

axios.interceptors.response.use(
  function (res) {
    // 处理登录状态问题
    if (res.data.code === 2000) {
      // 2000是未登录或者登录状态过期
      localStorage.removeItem('token');
      localStorage.removeItem('uid');
      showFailToast({
        message: '用户的登录状态过期或未登录',
        onClose: () => {
          // 去登录页
          router.push('/login')
        }
      })
    }
    return res;
  },
  function (error) {
    return Promise.reject(error);
  }
);
export default axios